Skip to content

Commit c790f73

Browse files
committed
Vector-fp instructions depend on zve, not F/D
1 parent 67e205c commit c790f73

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

riscv/isa_parser.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ class isa_parser_t {
104104
std::string get_isa_string() const { return isa_string; }
105105
reg_t get_vlen() const { return vlen; }
106106
reg_t get_elen() const { return elen; }
107+
bool get_zvf() const { return zvf; }
108+
bool get_zvd() const { return zvd; }
107109
bool extension_enabled(unsigned char ext) const {
108110
return extension_enabled(isa_extension_t(ext));
109111
}

riscv/v_ext_macros.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1449,8 +1449,8 @@ reg_t index[P.VU.vlmax]; \
14491449
#define VI_VFP_COMMON \
14501450
require_fp; \
14511451
require((P.VU.vsew == e16 && p->extension_enabled(EXT_ZVFH)) || \
1452-
(P.VU.vsew == e32 && p->extension_enabled('F')) || \
1453-
(P.VU.vsew == e64 && p->extension_enabled('D'))); \
1452+
(P.VU.vsew == e32 && p->get_isa().get_zvf()) || \
1453+
(P.VU.vsew == e64 && p->get_isa().get_zvd())); \
14541454
require_vector(true); \
14551455
require(STATE.frm->read() < 0x5); \
14561456
reg_t UNUSED vl = P.VU.vl->read(); \
@@ -1662,8 +1662,8 @@ reg_t index[P.VU.vlmax]; \
16621662
#define VI_VFP_VV_LOOP_WIDE_REDUCTION(BODY16, BODY32) \
16631663
VI_CHECK_REDUCTION(true) \
16641664
VI_VFP_COMMON \
1665-
require((P.VU.vsew == e16 && p->extension_enabled('F')) || \
1666-
(P.VU.vsew == e32 && p->extension_enabled('D'))); \
1665+
require((P.VU.vsew == e16 && p->get_isa().get_zvf()) || \
1666+
(P.VU.vsew == e32 && p->get_isa().get_zvd())); \
16671667
bool is_active = false; \
16681668
switch (P.VU.vsew) { \
16691669
case e16: { \
@@ -1948,17 +1948,17 @@ reg_t index[P.VU.vlmax]; \
19481948
switch (P.VU.vsew) { \
19491949
case e16: \
19501950
{ VI_VFP_CVT_LOOP(CVT_INT_TO_FP_PARAMS(16, 16, sign), \
1951-
{ p->extension_enabled(EXT_ZVFH); }, \
1951+
{ require(p->extension_enabled(EXT_ZVFH)); }, \
19521952
BODY16); } \
19531953
break; \
19541954
case e32: \
19551955
{ VI_VFP_CVT_LOOP(CVT_INT_TO_FP_PARAMS(32, 32, sign), \
1956-
{ p->extension_enabled('F'); }, \
1956+
{ require(p->get_isa().get_zvf()); }, \
19571957
BODY32); } \
19581958
break; \
19591959
case e64: \
19601960
{ VI_VFP_CVT_LOOP(CVT_INT_TO_FP_PARAMS(64, 64, sign), \
1961-
{ p->extension_enabled('D'); }, \
1961+
{ require(p->get_isa().get_zvd()); }, \
19621962
BODY64); } \
19631963
break; \
19641964
default: \
@@ -1972,17 +1972,17 @@ reg_t index[P.VU.vlmax]; \
19721972
switch (P.VU.vsew) { \
19731973
case e16: \
19741974
{ VI_VFP_CVT_LOOP(CVT_FP_TO_INT_PARAMS(16, 16, sign), \
1975-
{ p->extension_enabled(EXT_ZVFH); }, \
1975+
{ require(p->extension_enabled(EXT_ZVFH)); }, \
19761976
BODY16); } \
19771977
break; \
19781978
case e32: \
19791979
{ VI_VFP_CVT_LOOP(CVT_FP_TO_INT_PARAMS(32, 32, sign), \
1980-
{ p->extension_enabled('F'); }, \
1980+
{ require(p->get_isa().get_zvf()); }, \
19811981
BODY32); } \
19821982
break; \
19831983
case e64: \
19841984
{ VI_VFP_CVT_LOOP(CVT_FP_TO_INT_PARAMS(64, 64, sign), \
1985-
{ p->extension_enabled('D'); }, \
1985+
{ require(p->get_isa().get_zvd()); }, \
19861986
BODY64); } \
19871987
break; \
19881988
default: \

0 commit comments

Comments
 (0)