aboutsummaryrefslogtreecommitdiff
path: root/rv_zimop
diff options
context:
space:
mode:
Diffstat (limited to 'rv_zimop')
-rw-r--r--rv_zimop53
1 files changed, 53 insertions, 0 deletions
diff --git a/rv_zimop b/rv_zimop
new file mode 100644
index 0000000..c1dcea0
--- /dev/null
+++ b/rv_zimop
@@ -0,0 +1,53 @@
+# The Zimop extension defines 32 MOP instructions named mop.r.0 -- mop.r.31.
+# They are encoded as 1-00--0111--sssss100ddddd1110011, where - denotes an
+# available opcode bit, s denotes the rs1 field, and d denotes the rd field.
+# add a pseudo-inst mop.r.N that matches mop.r.*
+
+mop.r.N mop_r_t_30 mop_r_t_27_26 mop_r_t_21_20 rd rs1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.0 rd rs1 30=0 27=0 26=0 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.1 rd rs1 30=0 27=0 26=0 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.2 rd rs1 30=0 27=0 26=0 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.3 rd rs1 30=0 27=0 26=0 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.4 rd rs1 30=0 27=0 26=1 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.5 rd rs1 30=0 27=0 26=1 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.6 rd rs1 30=0 27=0 26=1 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.7 rd rs1 30=0 27=0 26=1 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.8 rd rs1 30=0 27=1 26=0 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.9 rd rs1 30=0 27=1 26=0 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.10 rd rs1 30=0 27=1 26=0 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.11 rd rs1 30=0 27=1 26=0 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.12 rd rs1 30=0 27=1 26=1 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.13 rd rs1 30=0 27=1 26=1 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.14 rd rs1 30=0 27=1 26=1 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.15 rd rs1 30=0 27=1 26=1 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.16 rd rs1 30=1 27=0 26=0 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.17 rd rs1 30=1 27=0 26=0 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.18 rd rs1 30=1 27=0 26=0 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.19 rd rs1 30=1 27=0 26=0 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.20 rd rs1 30=1 27=0 26=1 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.21 rd rs1 30=1 27=0 26=1 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.22 rd rs1 30=1 27=0 26=1 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.23 rd rs1 30=1 27=0 26=1 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.24 rd rs1 30=1 27=1 26=0 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.25 rd rs1 30=1 27=1 26=0 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.26 rd rs1 30=1 27=1 26=0 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.27 rd rs1 30=1 27=1 26=0 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.28 rd rs1 30=1 27=1 26=1 21=0 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.29 rd rs1 30=1 27=1 26=1 21=0 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.30 rd rs1 30=1 27=1 26=1 21=1 20=0 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.r.N mop.r.31 rd rs1 30=1 27=1 26=1 21=1 20=1 31=1 29..28=0 25..22=7 14..12=4 6..2=0x1C 1..0=3
+
+# The Zimop extension additionally defines 8 MOP instructions named mop.rr.0
+# -- mop.rr.7. They are encoded as 1-00--1tttttsssss100ddddd1110011, where t
+# denotes the rs2 field.
+# add a pseudo-inst mop.rr.N taht matches mop.rr.*
+
+mop.rr.N mop_rr_t_30 mop_rr_t_27_26 rd rs1 rs2 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.0 rd rs1 rs2 30=0 27=0 26=0 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.1 rd rs1 rs2 30=0 27=0 26=1 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.2 rd rs1 rs2 30=0 27=1 26=0 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.3 rd rs1 rs2 30=0 27=1 26=1 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.4 rd rs1 rs2 30=1 27=0 26=0 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.5 rd rs1 rs2 30=1 27=0 26=1 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.6 rd rs1 rs2 30=1 27=1 26=0 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3
+$pseudo_op rv_zimop::mop.rr.N mop.rr.7 rd rs1 rs2 30=1 27=1 26=1 31=1 29..28=0 25=1 14..12=4 6..2=0x1C 1..0=3