diff options
author | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-06-23 00:22:56 -0700 |
---|---|---|
committer | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-06-25 10:34:04 -0700 |
commit | 941bfba32a424c6d060840d48315bda28b19c50d (patch) | |
tree | 3a4b355064a970d8ff845e9d12d99ddec1d0c10d /riscv/insns/viota_m.h | |
parent | 958dcdc6fe6ed648444b622bbe667d6d477549ec (diff) | |
download | spike-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/insns/viota_m.h')
-rw-r--r-- | riscv/insns/viota_m.h | 6 |
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) { |