// vmpopc rd, vs2, vm require(P.VU.vsew >= e8 && P.VU.vsew <= e64); require_vector(true); reg_t vl = P.VU.vl; reg_t sew = P.VU.vsew; reg_t rd_num = insn.rd(); reg_t rs2_num = insn.rs2(); require(P.VU.vstart == 0); reg_t popcount = 0; for (reg_t i=P.VU.vstart; i(rs2_num, midx ) >> mpos) & 0x1) == 1; if (insn.v_vm() == 1) { popcount += vs2_lsb; } else { bool do_mask = (P.VU.elt(0, midx) >> mpos) & 0x1; popcount += (vs2_lsb && do_mask); } } P.VU.vstart = 0; WRITE_RD(popcount);