aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/decode.h2
-rw-r--r--riscv/insns/vfmv_f_s.h1
-rw-r--r--riscv/insns/vfmv_s_f.h1
3 files changed, 4 insertions, 0 deletions
diff --git a/riscv/decode.h b/riscv/decode.h
index c64cacc..cdfee77 100644
--- a/riscv/decode.h
+++ b/riscv/decode.h
@@ -1917,6 +1917,7 @@ for (reg_t i = 0; i < P.VU.vlmax && P.VU.vl != 0; ++i) { \
(P.VU.vsew == e32 && p->supports_extension('F')) || \
(P.VU.vsew == e64 && p->supports_extension('D'))); \
require_vector(true);\
+ require(STATE.frm < 0x5);\
reg_t vl = P.VU.vl; \
reg_t rd_num = insn.rd(); \
reg_t rs1_num = insn.rs1(); \
@@ -2303,6 +2304,7 @@ for (reg_t i = 0; i < P.VU.vlmax && P.VU.vl != 0; ++i) { \
require((P.VU.vsew == e8 && p->supports_extension(EXT_ZFH)) || \
(P.VU.vsew == e16 && p->supports_extension('F')) || \
(P.VU.vsew == e32 && p->supports_extension('D'))); \
+ require(STATE.frm < 0x5);\
reg_t vl = P.VU.vl; \
reg_t rd_num = insn.rd(); \
reg_t rs1_num = insn.rs1(); \
diff --git a/riscv/insns/vfmv_f_s.h b/riscv/insns/vfmv_f_s.h
index 47e3c3b..4a81436 100644
--- a/riscv/insns/vfmv_f_s.h
+++ b/riscv/insns/vfmv_f_s.h
@@ -4,6 +4,7 @@ require_fp;
require((P.VU.vsew == e16 && p->supports_extension(EXT_ZFH)) ||
(P.VU.vsew == e32 && p->supports_extension('F')) ||
(P.VU.vsew == e64 && p->supports_extension('D')));
+require(STATE.frm < 0x5);
reg_t rs2_num = insn.rs2();
uint64_t vs2_0 = 0;
diff --git a/riscv/insns/vfmv_s_f.h b/riscv/insns/vfmv_s_f.h
index 4a4c105..52ed7b2 100644
--- a/riscv/insns/vfmv_s_f.h
+++ b/riscv/insns/vfmv_s_f.h
@@ -4,6 +4,7 @@ require_fp;
require((P.VU.vsew == e16 && p->supports_extension(EXT_ZFH)) ||
(P.VU.vsew == e32 && p->supports_extension('F')) ||
(P.VU.vsew == e64 && p->supports_extension('D')));
+require(STATE.frm < 0x5);
reg_t vl = P.VU.vl;