aboutsummaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
Diffstat (limited to 'riscv')
-rw-r--r--riscv/decode.h1
-rw-r--r--riscv/encoding.h5
-rw-r--r--riscv/insns/vsetivli.h2
-rw-r--r--riscv/riscv.mk.in1
4 files changed, 8 insertions, 1 deletions
diff --git a/riscv/decode.h b/riscv/decode.h
index 465b816..591e41d 100644
--- a/riscv/decode.h
+++ b/riscv/decode.h
@@ -119,6 +119,7 @@ public:
uint64_t v_nf() { return x(29, 3); }
uint64_t v_simm5() { return xs(15, 5); }
uint64_t v_zimm5() { return x(15, 5); }
+ uint64_t v_zimm10() { return x(20, 10); }
uint64_t v_zimm11() { return x(20, 11); }
uint64_t v_lmul() { return x(20, 2); }
uint64_t v_frac_lmul() { return x(22, 1); }
diff --git a/riscv/encoding.h b/riscv/encoding.h
index ba5fa21..881ed7d 100644
--- a/riscv/encoding.h
+++ b/riscv/encoding.h
@@ -1,6 +1,6 @@
/*
* This file is auto-generated by running 'make ../riscv-isa-sim/riscv/encoding.h' in
- * https://github.com/riscv/riscv-opcodes (79c18f0)
+ * https://github.com/riscv/riscv-opcodes (e8f0392)
*/
/* See LICENSE for license details. */
@@ -1222,6 +1222,8 @@
#define MASK_CUSTOM3_RD_RS1 0x707f
#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b
#define MASK_CUSTOM3_RD_RS1_RS2 0x707f
+#define MATCH_VSETIVLI 0xc0007057
+#define MASK_VSETIVLI 0xc000707f
#define MATCH_VSETVLI 0x7057
#define MASK_VSETVLI 0x8000707f
#define MATCH_VSETVL 0x80007057
@@ -2891,6 +2893,7 @@ DECLARE_INSN(custom3_rs1_rs2, MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2)
DECLARE_INSN(custom3_rd, MATCH_CUSTOM3_RD, MASK_CUSTOM3_RD)
DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1)
DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, MASK_CUSTOM3_RD_RS1_RS2)
+DECLARE_INSN(vsetivli, MATCH_VSETIVLI, MASK_VSETIVLI)
DECLARE_INSN(vsetvli, MATCH_VSETVLI, MASK_VSETVLI)
DECLARE_INSN(vsetvl, MATCH_VSETVL, MASK_VSETVL)
DECLARE_INSN(vle1_v, MATCH_VLE1_V, MASK_VLE1_V)
diff --git a/riscv/insns/vsetivli.h b/riscv/insns/vsetivli.h
new file mode 100644
index 0000000..04900a2
--- /dev/null
+++ b/riscv/insns/vsetivli.h
@@ -0,0 +1,2 @@
+require_vector_novtype(false, false);
+WRITE_RD(P.VU.set_vl(insn.rd(), -1, insn.rs1(), insn.v_zimm10()));
diff --git a/riscv/riscv.mk.in b/riscv/riscv.mk.in
index 0a25b0a..d4422fe 100644
--- a/riscv/riscv.mk.in
+++ b/riscv/riscv.mk.in
@@ -875,6 +875,7 @@ riscv_insn_ext_v_ldst = \
vs8r_v \
riscv_insn_ext_v_ctrl = \
+ vsetivli \
vsetvli \
vsetvl \