aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2020-06-25 14:26:53 -0700
committerGitHub <noreply@github.com>2020-06-25 14:26:53 -0700
commit61f0dab33f7e529cc709908840311a8a7dcb23ce (patch)
tree9cbe4e25c9b67e1d057cc0cabff9123c5a9582fb
parent958dcdc6fe6ed648444b622bbe667d6d477549ec (diff)
parent94cac9f5c454b5fab7a521ddd1f4a315b59083d6 (diff)
downloadspike-61f0dab33f7e529cc709908840311a8a7dcb23ce.zip
spike-61f0dab33f7e529cc709908840311a8a7dcb23ce.tar.gz
spike-61f0dab33f7e529cc709908840311a8a7dcb23ce.tar.bz2
Merge pull request #494 from chihminchao/rvv-fix-2020-06-25
Rvv fix 2020 06 25
-rw-r--r--riscv/decode.h3
-rw-r--r--riscv/insns/viota_m.h6
2 files changed, 5 insertions, 4 deletions
diff --git a/riscv/decode.h b/riscv/decode.h
index 7debeaa..71caa58 100644
--- a/riscv/decode.h
+++ b/riscv/decode.h
@@ -1863,9 +1863,6 @@ for (reg_t i = 0; i < P.VU.vlmax && P.VU.vl != 0; ++i) { \
#define VI_VFP_LOOP_CMP_BASE \
VI_VFP_COMMON \
for (reg_t i = P.VU.vstart; i < vl; ++i) { \
- float32_t vs2 = P.VU.elt<float32_t>(rs2_num, i); \
- float32_t vs1 = P.VU.elt<float32_t>(rs1_num, i); \
- float32_t rs1 = f32(READ_FREG(rs1_num)); \
VI_LOOP_ELEMENT_SKIP(); \
uint64_t mmask = UINT64_C(1) << mpos; \
uint64_t &vdi = P.VU.elt<uint64_t>(rd_num, midx, true); \
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) {