Browse Source

Bypass masked-off elements for viota

* riscv/insns/viota_m.h: Bypass masked-off elements.
pull/2008/head
Haochen Gui 10 months ago
parent
commit
1ec477fffe
  1. 17
      riscv/insns/viota_m.h

17
riscv/insns/viota_m.h

@ -21,23 +21,22 @@ for (reg_t i = 0; i < vl; ++i) {
}
}
bool use_ori = (insn.v_vm() == 0) && !do_mask;
// Bypass masked-off elements
if ((insn.v_vm() == 0) && !do_mask)
continue;
switch (sew) {
case e8:
P.VU.elt<uint8_t>(rd_num, i, true) = use_ori ?
P.VU.elt<uint8_t>(rd_num, i) : cnt;
P.VU.elt<uint8_t>(rd_num, i, true) = cnt;
break;
case e16:
P.VU.elt<uint16_t>(rd_num, i, true) = use_ori ?
P.VU.elt<uint16_t>(rd_num, i) : cnt;
P.VU.elt<uint16_t>(rd_num, i, true) = cnt;
break;
case e32:
P.VU.elt<uint32_t>(rd_num, i, true) = use_ori ?
P.VU.elt<uint32_t>(rd_num, i) : cnt;
P.VU.elt<uint32_t>(rd_num, i, true) = cnt;
break;
default:
P.VU.elt<uint64_t>(rd_num, i, true) = use_ori ?
P.VU.elt<uint64_t>(rd_num, i) : cnt;
P.VU.elt<uint64_t>(rd_num, i, true) = cnt;
break;
}

Loading…
Cancel
Save