aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vslideup_vi.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/vslideup_vi.h')
-rw-r--r--riscv/insns/vslideup_vi.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/riscv/insns/vslideup_vi.h b/riscv/insns/vslideup_vi.h
index 4135b20..64b4aca 100644
--- a/riscv/insns/vslideup_vi.h
+++ b/riscv/insns/vslideup_vi.h
@@ -1,8 +1,10 @@
// vslideup.vi vd, vs2, rs1
-if (insn.v_vm() == 0)
+require((insn.rs2() & (P.VU.vlmul - 1)) == 0);
+require((insn.rd() & (P.VU.vlmul - 1)) == 0);
+require(insn.rd() != insn.rs2());
+if (P.VU.vlmul > 1 && insn.v_vm() == 0)
require(insn.rd() != 0);
-VI_CHECK_SS
const reg_t offset = insn.v_zimm5();
VI_LOOP_BASE
if (P.VU.vstart < offset && i < offset)