Skip to content

Commit af90d42

Browse files
committed
vector: check extension existence before reading vl
1 parent 67933ec commit af90d42

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

riscv/v_ext_macros.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,10 +1202,10 @@ reg_t index[P.VU.vlmax]; \
12021202

12031203
#define VI_LD(stride, offset, elt_width, is_mask_ldst) \
12041204
const reg_t nf = insn.v_nf() + 1; \
1205+
VI_CHECK_LOAD(elt_width, is_mask_ldst); \
12051206
const reg_t vl = is_mask_ldst ? ((P.VU.vl->read() + 7) / 8) : P.VU.vl->read(); \
12061207
const reg_t baseAddr = RS1; \
12071208
const reg_t vd = insn.rd(); \
1208-
VI_CHECK_LOAD(elt_width, is_mask_ldst); \
12091209
for (reg_t i = 0; i < vl; ++i) { \
12101210
VI_ELEMENT_SKIP; \
12111211
VI_STRIP(i); \
@@ -1220,12 +1220,12 @@ reg_t index[P.VU.vlmax]; \
12201220

12211221
#define VI_LD_INDEX(elt_width, is_seg) \
12221222
const reg_t nf = insn.v_nf() + 1; \
1223+
VI_CHECK_LD_INDEX(elt_width); \
12231224
const reg_t vl = P.VU.vl->read(); \
12241225
const reg_t baseAddr = RS1; \
12251226
const reg_t vd = insn.rd(); \
12261227
if (!is_seg) \
12271228
require(nf == 1); \
1228-
VI_CHECK_LD_INDEX(elt_width); \
12291229
VI_DUPLICATE_VREG(insn.rs2(), elt_width); \
12301230
for (reg_t i = 0; i < vl; ++i) { \
12311231
VI_ELEMENT_SKIP; \
@@ -1256,10 +1256,10 @@ reg_t index[P.VU.vlmax]; \
12561256

12571257
#define VI_ST(stride, offset, elt_width, is_mask_ldst) \
12581258
const reg_t nf = insn.v_nf() + 1; \
1259+
VI_CHECK_STORE(elt_width, is_mask_ldst); \
12591260
const reg_t vl = is_mask_ldst ? ((P.VU.vl->read() + 7) / 8) : P.VU.vl->read(); \
12601261
const reg_t baseAddr = RS1; \
12611262
const reg_t vs3 = insn.rd(); \
1262-
VI_CHECK_STORE(elt_width, is_mask_ldst); \
12631263
for (reg_t i = 0; i < vl; ++i) { \
12641264
VI_STRIP(i) \
12651265
VI_ELEMENT_SKIP; \
@@ -1274,12 +1274,12 @@ reg_t index[P.VU.vlmax]; \
12741274

12751275
#define VI_ST_INDEX(elt_width, is_seg) \
12761276
const reg_t nf = insn.v_nf() + 1; \
1277+
VI_CHECK_ST_INDEX(elt_width); \
12771278
const reg_t vl = P.VU.vl->read(); \
12781279
const reg_t baseAddr = RS1; \
12791280
const reg_t vs3 = insn.rd(); \
12801281
if (!is_seg) \
12811282
require(nf == 1); \
1282-
VI_CHECK_ST_INDEX(elt_width); \
12831283
VI_DUPLICATE_VREG(insn.rs2(), elt_width); \
12841284
for (reg_t i = 0; i < vl; ++i) { \
12851285
VI_STRIP(i) \
@@ -1310,10 +1310,10 @@ reg_t index[P.VU.vlmax]; \
13101310

13111311
#define VI_LDST_FF(elt_width) \
13121312
const reg_t nf = insn.v_nf() + 1; \
1313+
VI_CHECK_LOAD(elt_width, false); \
13131314
const reg_t vl = p->VU.vl->read(); \
13141315
const reg_t baseAddr = RS1; \
13151316
const reg_t rd_num = insn.rd(); \
1316-
VI_CHECK_LOAD(elt_width, false); \
13171317
bool early_stop = false; \
13181318
for (reg_t i = p->VU.vstart->read(); i < vl; ++i) { \
13191319
VI_STRIP(i); \

0 commit comments

Comments
 (0)