aboutsummaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
authorChih-Min Chao <chihmin.chao@sifive.com>2020-06-23 00:22:56 -0700
committerChih-Min Chao <chihmin.chao@sifive.com>2020-06-25 10:34:04 -0700
commit941bfba32a424c6d060840d48315bda28b19c50d (patch)
tree3a4b355064a970d8ff845e9d12d99ddec1d0c10d /riscv
parent958dcdc6fe6ed648444b622bbe667d6d477549ec (diff)
downloadspike-941bfba32a424c6d060840d48315bda28b19c50d.zip
spike-941bfba32a424c6d060840d48315bda28b19c50d.tar.gz
spike-941bfba32a424c6d060840d48315bda28b19c50d.tar.bz2
rvv: fix viota.m overlapping rule
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
Diffstat (limited to 'riscv')
-rw-r--r--riscv/insns/viota_m.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/riscv/insns/viota_m.h b/riscv/insns/viota_m.h
index 69c0d20..d5b5fbc 100644
--- a/riscv/insns/viota_m.h
+++ b/riscv/insns/viota_m.h
@@ -7,9 +7,13 @@ reg_t rd_num = insn.rd();
reg_t rs1_num = insn.rs1();
reg_t rs2_num = insn.rs2();
require(P.VU.vstart == 0);
-require_noover(rd_num, P.VU.vflmul, rs2_num, 1);
require_vm;
require_align(rd_num, P.VU.vflmul);
+if ((P.VU.vflmul / P.VU.vsew) < 1) {
+ require_noover(rd_num, P.VU.vflmul, rs2_num, 1);
+} else {
+ require_noover_widen(rd_num, P.VU.vflmul, rs2_num, 1);
+}
int cnt = 0;
for (reg_t i = 0; i < vl; ++i) {