aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChih-Min Chao <chihmin.chao@sifive.com>2022-05-11 02:37:24 -0700
committerChih-Min Chao <chihmin.chao@sifive.com>2022-05-11 08:56:54 -0700
commit08afafccfd3ceaf6e158fc6a040bb0c931caa51b (patch)
tree10d32f1af6d3d197c8e9ed0e324d39957d6e0976
parent3099c33d15281ff71bf5c9b7ec5a76f86df1ab60 (diff)
downloadriscv-isa-sim-08afafccfd3ceaf6e158fc6a040bb0c931caa51b.zip
riscv-isa-sim-08afafccfd3ceaf6e158fc6a040bb0c931caa51b.tar.gz
riscv-isa-sim-08afafccfd3ceaf6e158fc6a040bb0c931caa51b.tar.bz2
rvv: fix the checking eew and elen for index load
eew of index register can't be larger than elen ex: elen = 32, vloxei64.v is illegal Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
-rw-r--r--riscv/v_ext_macros.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/riscv/v_ext_macros.h b/riscv/v_ext_macros.h
index 2a32979..4df6813 100644
--- a/riscv/v_ext_macros.h
+++ b/riscv/v_ext_macros.h
@@ -84,6 +84,7 @@ static inline bool is_aligned(const unsigned val, const unsigned pos)
#define VI_CHECK_ST_INDEX(elt_width) \
require_vector(false); \
+ require(elt_width <= P.VU.ELEN); \
float vemul = ((float)elt_width / P.VU.vsew * P.VU.vflmul); \
require(vemul >= 0.125 && vemul <= 8); \
reg_t emul = vemul < 1 ? 1 : vemul; \